package object04;
/*
* 所有类都直接或间接的继承Object类
*由于利用equals方法比较内存地址值没有实际意义
* 在实际开发中一般比较的是对象的属性更有意义
* 重写equals标准:
*   1.如果两个类中的属性全部相同，则返回true
*   2.如果两个类中的属性至少有一个不同，则返回false
* 例如Person类
*   如果对象的姓名和年龄全部相同，则返回true
*   如果对象的姓名和年龄至少有一个不相同，则返回false
* */
public class Person {
    private String name;

    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    /**
     *  Person:如果两个对象的姓名和年龄均相同我们就返回true
     *        如果两个对象中的姓名和年龄至少有一个不同返回false
     * @param obj
     * @return
     */
    @Override
    public boolean equals(Object obj) {
        //this = p1 = new Person("赵敏", 19)
        //obj = p2 = new Person("周芷若", 20);
        //this.name.equals(p.name) 调用是字符串类(String)类中的equals方法,比较的是字符串内容
        //如果相同则返回true
        Person p =(Person)obj;
        return this.name.equals(p.name) && this.age == p.age;
    }
}
